home *** CD-ROM | disk | FTP | other *** search
- /*
- File: DriverFamilyMatching.h
-
- Contains: Interfaces for create native drivers NDRV
-
- Version:
-
- DRI: Pradeep Kathail
-
- Copyright: © 1995-1999 by Apple Computer, Inc., all rights reserved.
-
- Warning: *** APPLE INTERNAL USE ONLY ***
- This file may contain unreleased API's
-
- BuildInfo: Built by: Scott Johnson
- On: 10/8/99 11:26 AM
- With Interfacer: 3.0d13 (MPW PowerPC)
- From: DriverFamilyMatching.i
- Revision: 30
- Dated: 5/8/99
- Last change by: tjc
- Last comment: This file reverts back to <26>. All Power budgeting stuff moved
-
- Bugs: Report bugs to Radar component "System Interfaces", "Latest"
- List the version information (from above) in the Problem Description.
-
- */
- #ifndef __DRIVERFAMILYMATCHING__
- #define __DRIVERFAMILYMATCHING__
-
- #ifndef __MACTYPES__
- #include <MacTypes.h>
- #endif
-
- #ifndef __NAMEREGISTRY__
- #include <NameRegistry.h>
- #endif
-
- #ifndef __CODEFRAGMENTS__
- #include <CodeFragments.h>
- #endif
-
-
-
-
- #if PRAGMA_ONCE
- #pragma once
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_IMPORT
- #pragma import on
- #endif
-
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=mac68k
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(push, 2)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack(2)
- #endif
-
- /*
- ##############################################
- Well known properties in the Name Registry
- ##############################################
- */
-
- #define kPropertyName "name"
- #define kPropertyCompatible "compatible"
- #define kPropertyDriverPtr "driver-ptr"
- #define kPropertyDriverDesc "driver-description"
- #define kPropertyReg "reg"
- #define kPropertyAAPLAddress "AAPL,address"
- #define kPropertyMatching "matching"
- #define kPropertyAAPLDriverName "AAPL,driver-name"
-
- /* CPassThru */
- /*
- #########################################################
- Descriptor for Drivers and NDRVs
- #########################################################
- */
- /*
- QuickTime 3.0: "DriverType" has a name collision with cross-platform code.
- Use Mac prefix to avoid collision
- */
- /* Driver Typing Information Used to Match Drivers With Devices */
-
- struct MacDriverType {
- Str31 nameInfoStr; /* Driver Name/Info String*/
- NumVersion version; /* Driver Version Number*/
- };
- typedef struct MacDriverType MacDriverType;
- #if TARGET_OS_MAC
-
- typedef MacDriverType DriverType;
- #endif /* TARGET_OS_MAC */
-
- typedef MacDriverType * DriverTypePtr;
- /* OS Runtime Information Used to Setup and Maintain a Driver's Runtime Environment */
- typedef OptionBits RuntimeOptions;
- enum {
- kDriverIsLoadedUponDiscovery = 0x00000001, /* auto-load driver when discovered*/
- kDriverIsOpenedUponLoad = 0x00000002, /* auto-open driver when loaded*/
- kDriverIsUnderExpertControl = 0x00000004, /* I/O expert handles loads/opens*/
- kDriverIsConcurrent = 0x00000008, /* supports concurrent requests*/
- kDriverQueuesIOPB = 0x00000010, /* device manager doesn't queue IOPB*/
- kDriverIsLoadedAtBoot = 0x00000020, /* Driver is loaded at the boot time */
- kDriverIsForVirtualDevice = 0x00000040, /* Driver is for a virtual Device */
- kDriverSupportDMSuspendAndResume = 0x00000080 /* Driver supports Device Manager Suspend and Resume command */
- };
-
-
- struct DriverOSRuntime {
- RuntimeOptions driverRuntime; /* Options for OS Runtime*/
- Str31 driverName; /* Driver's name to the OS*/
- UInt32 driverDescReserved[8]; /* Reserved area*/
- };
- typedef struct DriverOSRuntime DriverOSRuntime;
- typedef DriverOSRuntime * DriverOSRuntimePtr;
- /* OS Service Information Used To Declare What APIs a Driver Supports */
-
- typedef UInt32 ServiceCount;
-
- struct DriverServiceInfo {
- OSType serviceCategory; /* Service Category Name*/
- OSType serviceType; /* Type within Category*/
- NumVersion serviceVersion; /* Version of service*/
- };
- typedef struct DriverServiceInfo DriverServiceInfo;
- typedef DriverServiceInfo * DriverServiceInfoPtr;
-
- struct DriverOSService {
- ServiceCount nServices; /* Number of Services Supported*/
- DriverServiceInfo service[1]; /* The List of Services (at least one)*/
- };
- typedef struct DriverOSService DriverOSService;
- typedef DriverOSService * DriverOSServicePtr;
- /* Categories */
- enum {
- kServiceCategoryDisplay = FOUR_CHAR_CODE('disp'), /* Display Manager*/
- kServiceCategoryOpenTransport = FOUR_CHAR_CODE('otan'), /* Open Transport*/
- kServiceCategoryBlockStorage = FOUR_CHAR_CODE('blok'), /* Block Storage*/
- kServiceCategoryNdrvDriver = FOUR_CHAR_CODE('ndrv'), /* Generic Native Driver*/
- kServiceCategoryScsiSIM = FOUR_CHAR_CODE('scsi'), /* SCSI */
- kServiceCategoryFileManager = FOUR_CHAR_CODE('file'), /* File Manager */
- kServiceCategoryIDE = FOUR_CHAR_CODE('ide-'), /* ide */
- kServiceCategoryADB = FOUR_CHAR_CODE('adb-'), /* adb */
- kServiceCategoryPCI = FOUR_CHAR_CODE('pci-'), /* pci bus */
- /* Nu Bus */
- kServiceCategoryDFM = FOUR_CHAR_CODE('dfm-'), /* DFM */
- kServiceCategoryMotherBoard = FOUR_CHAR_CODE('mrbd'), /* mother Board */
- kServiceCategoryKeyboard = FOUR_CHAR_CODE('kybd'), /* Keyboard */
- kServiceCategoryPointing = FOUR_CHAR_CODE('poit'), /* Pointing */
- kServiceCategoryRTC = FOUR_CHAR_CODE('rtc-'), /* RTC */
- kServiceCategoryNVRAM = FOUR_CHAR_CODE('nram'), /* NVRAM */
- kServiceCategorySound = FOUR_CHAR_CODE('sond'), /* Sound (1/3/96 MCS) */
- kServiceCategoryPowerMgt = FOUR_CHAR_CODE('pgmt'), /* Power Management */
- kServiceCategoryGeneric = FOUR_CHAR_CODE('genr') /* Generic Service Category to receive general Events */
- };
-
- /* Ndrv ServiceCategory Types */
- enum {
- kNdrvTypeIsGeneric = FOUR_CHAR_CODE('genr'), /* generic*/
- kNdrvTypeIsVideo = FOUR_CHAR_CODE('vido'), /* video*/
- kNdrvTypeIsBlockStorage = FOUR_CHAR_CODE('blok'), /* block storage*/
- kNdrvTypeIsNetworking = FOUR_CHAR_CODE('netw'), /* networking*/
- kNdrvTypeIsSerial = FOUR_CHAR_CODE('serl'), /* serial*/
- kNdrvTypeIsParallel = FOUR_CHAR_CODE('parl'), /* parallel */
- kNdrvTypeIsSound = FOUR_CHAR_CODE('sond'), /* sound*/
- kNdrvTypeIsBusBridge = FOUR_CHAR_CODE('brdg')
- };
-
-
- typedef UInt32 DriverDescVersion;
- /* The Driver Description */
- enum {
- kTheDescriptionSignature = FOUR_CHAR_CODE('mtej'),
- kDriverDescriptionSignature = FOUR_CHAR_CODE('pdes')
- };
-
- enum {
- kInitialDriverDescriptor = 0,
- kVersionOneDriverDescriptor = 1
- };
-
-
- struct DriverDescription {
- OSType driverDescSignature; /* Signature field of this structure*/
- DriverDescVersion driverDescVersion; /* Version of this data structure*/
- MacDriverType driverType; /* Type of Driver*/
- DriverOSRuntime driverOSRuntimeInfo; /* OS Runtime Requirements of Driver*/
- DriverOSService driverServices; /* Apple Service API Membership*/
- };
- typedef struct DriverDescription DriverDescription;
- typedef DriverDescription * DriverDescriptionPtr;
-
-
-
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=reset
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(pop)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack()
- #endif
-
- #ifdef PRAGMA_IMPORT_OFF
- #pragma import off
- #elif PRAGMA_IMPORT
- #pragma import reset
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __DRIVERFAMILYMATCHING__ */
-
-